/*
 *    Copyright (c) 2018-2025, lengleng All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * Redistributions of source code must retain the above copyright notice,
 * this list of conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above copyright
 * notice, this list of conditions and the following disclaimer in the
 * documentation and/or other materials provided with the distribution.
 * Neither the name of the pig4cloud.com developer nor the names of its
 * contributors may be used to endorse or promote products derived from
 * this software without specific prior written permission.
 * Author: lengleng (wangiegie@gmail.com)
 */
package com.pig4cloud.pigx.shop.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.pig4cloud.pigx.common.core.constant.enums.DeleteFlagEnum;
import com.pig4cloud.pigx.shop.api.entity.*;
import com.pig4cloud.pigx.shop.api.vo.GoodsSkuGiftVO;
import com.pig4cloud.pigx.shop.api.vo.GoodsSkuSpecVO;
import com.pig4cloud.pigx.shop.api.vo.GoodsSkuVO;
import com.pig4cloud.pigx.shop.api.vo.GoodsSpuSpecVO;
import com.pig4cloud.pigx.shop.mapper.GoodsSkuMapper;
import com.pig4cloud.pigx.shop.service.*;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;

/**
 * 商品SKU
 *
 * @author pig code generator
 * @date 2023-10-30 14:06:23
 */
@Service
@AllArgsConstructor
public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper, GoodsSku> implements GoodsSkuService {

	// private final GoodsSkuSpecService goodsSkuSpecService;
	//
	// private final GoodsSkuGiftService goodsSkuGiftService;
	//
	// private final GoodsSpuSpecService goodsSpuSpecService;
	//
	// private final GoodsSpecService goodsSpecService;
	//
	// private final GoodsGiftService goodsGiftService;
	/**
	 * 获取sku信息
	 * @param id
	 * @return
	 */
	// @Override
	// public GoodsSkuVO getSkuById(Long id) {
	// GoodsSkuVO result = new GoodsSkuVO();
	// result.setSpecs(new ArrayList<>());
	// result.setGifts(new ArrayList<>());
	//
	// GoodsSku goodsSku = this.getById(id);
	// BeanUtils.copyProperties(goodsSku, result);
	//
	// // 获取sku对应的规格列表
	// LambdaQueryWrapper<GoodsSkuSpec> lqwGoodsSkuSpec = new LambdaQueryWrapper<>();
	// lqwGoodsSkuSpec.eq(GoodsSkuSpec::getSpuId, goodsSku.getSpuId());
	// lqwGoodsSkuSpec.eq(GoodsSkuSpec::getSkuId, goodsSku.getId());
	// List<GoodsSkuSpec> goodsSkuSpecs = goodsSkuSpecService.list(lqwGoodsSkuSpec);
	//
	// // 获取sku对应的礼品
	// LambdaQueryWrapper<GoodsSkuGift> lqwGoodsSkuGift = new LambdaQueryWrapper<>();
	// lqwGoodsSkuGift.eq(GoodsSkuGift::getSpuId, goodsSku.getSpuId());
	// lqwGoodsSkuGift.eq(GoodsSkuGift::getSkuId, goodsSku.getId());
	// List<GoodsSkuGift> goodsSkuGifts = goodsSkuGiftService.list(lqwGoodsSkuGift);
	//
	// // 获取规格
	// LambdaQueryWrapper<GoodsSpuSpec> lqwGoodsSpuSpec = new LambdaQueryWrapper<>();
	// lqwGoodsSpuSpec.eq(GoodsSpuSpec::getSpuId, goodsSku.getSpuId());
	// List<GoodsSpuSpec> goodsSpuSpecs = goodsSpuSpecService.list(lqwGoodsSpuSpec);
	//
	// List<Long> goodsSpecIds = new ArrayList<>();
	// goodsSpuSpecs.forEach(spuSpec -> {
	// goodsSpecIds.add(spuSpec.getSpecId());
	// });
	//
	// // 获取规格值列表
	// LambdaQueryWrapper<GoodsSpec> lqwGoodsSpec = new LambdaQueryWrapper<>();
	// lqwGoodsSpec.in(GoodsSpec::getSpecId, goodsSpecIds);
	// lqwGoodsSpec.eq(GoodsSpec::getDelFlag, DeleteFlagEnum.VALID.getType());
	// List<GoodsSpec> goodsSpecValues = goodsSpecService.list(lqwGoodsSpec);
	//
	// goodsSkuSpecs.forEach(skuSpec->{
	// GoodsSkuSpecVO goodsSkuSpecVO = new GoodsSkuSpecVO();
	// Optional<GoodsSpec> goodsSpecValue = goodsSpecValues.stream()
	// .filter(p -> p.getId().longValue() ==
	// skuSpec.getSpecValueId().longValue()).findFirst();
	// if (goodsSpecValue.isPresent()) {
	// goodsSkuSpecVO.setSpecValueName(goodsSpecValue.get().getName());
	// }
	// BeanUtils.copyProperties(skuSpec, goodsSkuSpecVO);
	// result.getSpecs().add(goodsSkuSpecVO);
	// });
	//
	// // 存在礼品的场合
	// if (goodsSkuGifts.size() > 0) {
	// List<Long> giftIds = new ArrayList<>();
	// goodsSkuGifts.forEach(skuGift -> {
	// GoodsSkuGiftVO goodsSkuGiftVO = new GoodsSkuGiftVO();
	// BeanUtils.copyProperties(skuGift, goodsSkuGiftVO);
	// result.getGifts().add(goodsSkuGiftVO);
	// giftIds.add(skuGift.getGiftId());
	// });
	//
	// // 存在礼品的场合
	// if(giftIds.size() > 0){
	// // 获取礼品相关信息
	// LambdaQueryWrapper<GoodsGift> lqwGoodsGift = new LambdaQueryWrapper<>();
	// lqwGoodsGift.in(GoodsGift::getId, giftIds);
	// lqwGoodsGift.eq(GoodsGift::getDelFlag, DeleteFlagEnum.VALID.getType());
	// List<GoodsGift> goodsGifts = goodsGiftService.list(lqwGoodsGift);
	// result.getGifts().forEach(skuGift -> {
	// Optional<GoodsGift> item = goodsGifts.stream()
	// .filter(p -> p.getId().longValue() == skuGift.getGiftId().longValue()).findFirst();
	// if (item.isPresent()) {
	// // 设置赠品名称
	// skuGift.setGiftName(item.get().getGiftName());
	// // 设置赠品轮播图
	// skuGift.setBannerImages(item.get().getBannerImages());
	// }
	// });
	// }
	// }
	//
	//
	// return result;
	// }

	/**
	 * 修改sku信息
	 * @param goodsSkuVO
	 * @return
	 */
	// @Override
	// public boolean update(GoodsSkuVO goodsSkuVO) {
	// return false;
	// }

}
